package util;

import sun.misc.Perf.GetPerfAction;
import model.Simbolo;

public enum SimboloEnum {

	IDENTIFICADOR {
		public int codigo() {
			return 1;
		}

		public String palavra() {
			return "";
		}
	},

	NUMERO {
		public int codigo() {
			return 2;
		}

		public String palavra() {
			return "";
		}
	},

	// Operadores Aritimeticos
	OPERADOR_ADICAO {
		public int codigo() {
			return 3;
		}

		public String palavra() {
			return "+";
		}
	},
	OPERADOR_MULTIPLICACAO {
		public int codigo() {
			return 4;
		}

		public String palavra() {
			return "*";
		}
	},
	OPERADOR_SUBTRACAO {
		public int codigo() {
			return 5;
		}

		public String palavra() {
			return "-";
		}
	},
	OPERADOR_DIVISAO {
		public int codigo() {
			return 6;
		}

		public String palavra() {
			return "/";
		}
	},
	OPERADOR_ATRIBUICAO {
		public int codigo() {
			return 7;
		}

		public String palavra() {
			return "=";
		}
	},

	// Operadores Relacionais
	OPERADOR_MAIOR {
		public int codigo() {
			return 8;
		}

		public String palavra() {
			return ">";
		}
	},
	OPERADOR_MAIORIGUAL {
		public int codigo() {
			return 9;
		}

		public String palavra() {
			return ">=";
		}
	},
	OPERADOR_IGUAL {
		public int codigo() {
			return 10;
		}

		public String palavra() {
			return "==";
		}
	},
	OPERADOR_MENOR {
		public int codigo() {
			return 11;
		}

		public String palavra() {
			return "<";
		}
	},
	OPERADOR_MENORIGUAL {
		public int codigo() {
			return 12;
		}

		public String palavra() {
			return "<=";
		}
	},
	OPERADOR_DIFERENCA {
		public int codigo() {
			return 13;
		}

		public String palavra() {
			return "-";
		}
	},

	PARENTISADOR_ABRE {
		public int codigo() {
			return 14;
		}

		public String palavra() {
			return "(";
		}
	},
	PARENTISADOR_FECHA {
		public int codigo() {
			return 15;
		}

		public String palavra() {
			return ")";
		}
	},
	CHAVE_ABRE {
		public int codigo() {
			return 16;
		}

		public String palavra() {
			return "{";
		}
	},
	CHAVE_FECHA {
		public int codigo() {
			return 17;
		}

		public String palavra() {
			return "}";
		}
	},
	FIM_DE_ARQUIVO {
		public int codigo() {
			return 18;
		}

		public String palavra() {
			return "$";
		}
	},
	ASPAS_STRING {
		public int codigo() {
			return 19;
		}

		public String palavra() {
			return "\"";
		}
	},

	// Operadores Logicos
	OPERADOR_AND {
		public int codigo() {
			return 20;
		}

		public String palavra() {
			return "&&";
		}
	},
	OPERADOR_OR {
		public int codigo() {
			return 21;
		}

		public String palavra() {
			return "||";
		}
	},
	OPERADOR_NOT {
		public int codigo() {
			return 22;
		}

		public String palavra() {
			return "!";
		}
	},
	PONTUACAO {
		public int codigo() {
			return 23;
		}

		public String palavra() {
			return ".";
		}
	},

	// palavras reservadas
	TRUE {
		public int codigo() {
			return 24;
		}

		public String palavra() {
			return "true";
		}
	},
	FALSE {
		public int codigo() {
			return 25;
		}

		public String palavra() {
			return "false";
		}
	},
	INT {
		public int codigo() {
			return 26;
		}

		public String palavra() {
			return "int";
		}
	},
	DOUBLE {
		public int codigo() {
			return 27;
		}

		public String palavra() {
			return "double";
		}
	},
	BOOLEAN {
		public int codigo() {
			return 28;
		}

		public String palavra() {
			return "boolean";
		}
	},
	CHAR {
		public int codigo() {
			return 29;
		}

		public String palavra() {
			return "char";
		}
	},
	STRING {
		public int codigo() {
			return 30;
		}

		public String palavra() {
			return "string";
		}
	},
	PUBLIC {
		public int codigo() {
			return 31;
		}

		public String palavra() {
			return "public";
		}
	},
	CLASS {
		public int codigo() {
			return 32;
		}

		public String palavra() {
			return "class";
		}
	},
	IF {
		public int codigo() {
			return 33;
		}

		public String palavra() {
			return "if";
		}
	},
	WHILE {
		public int codigo() {
			return 34;
		}

		public String palavra() {
			return "while";
		}
	},
	ELSE {
		public int codigo() {
			return 35;
		}

		public String palavra() {
			return "else";
		}
	},
	PONTO_E_VIRGULA {
		public int codigo() {
			return 36;
		}

		public String palavra() {
			return ";";
		}
	},
	VIRGULA {
		public int codigo() {
			return 37;
		}

		public String palavra() {
			return ",";
		}
	},
	FUNCTION {
		public int codigo() {
			return 38;
		}

		public String palavra() {
			return "function";
		}
	},
		COMENTARIO_ABRE {
			public int codigo() {
				return 40;
			}

			public String palavra() {
				return "abre comentario";
			}
	},
			COMENTARIO_FECHA {
				public int codigo() {
					return 41;
				}

				public String palavra() {
					return "fecha comentario";
				}
	},
	VAZIO {
		public int codigo() {
			return 0;
		}

		public String palavra() {
			return "&";
		}
},SUB_LINHA {
	public int codigo() {
		return 43;
	}

	public String palavra() {
		return "_";
	}
}, 
	
			COMENTARIO {
					public int codigo() {
						return 41;
					}

					public String palavra() {
						return "fecha comentario";
				}
		
	};
	
	
	public Simbolo getSimbolo(){
		return new Simbolo(palavra(), codigo(), palavra());
	}

	public int codigo() {
		return 0;
	}

	public String palavra() {
		return "";
	}
}
